Prometheus 的 Exporter 输出的数据遵循其独特的指标格式规范。要真正掌握 Prometheus,理解其四种核心指标类型——**Counter, Gauge, Histogram, 和 Summary**——是必不可少的第一步。本文将详细拆解它们的特点和适用场景。
一句话定义:一个只增不减的累加器,如同汽车的总里程表。
rate() 或 irate() 函数结合使用,计算事件发生的速率。http_requests_total)errors_total)jobs_completed_total)# HELP http_requests_total Total number of HTTP requests
# TYPE http_requests_total counter
http_requests_total{method="post",code="200"} 1027
http_requests_total{method="post",code="400"} 3注意: 不要用 Counter 来记录可增可减的数值,比如当前温度或内存使用量。
一句话定义:一个可以任意上下波动的瞬时值,如同汽车的速度表。
memory_usage_bytes)active_connections)jobs_in_queue)# HELP temperature_celsius Current temperature in Celsius
# TYPE temperature_celsius gauge
temperature_celsius{location="server-room"} 23.7一句话定义:对一段时间内的观测值(如延迟)进行采样,并将其分布到预设的桶(buckets)中进行统计。
_bucket{le=""} :小于等于该上边界的样本数(累加值)。_sum:所有样本值的总和。_count:样本的总数量。# HELP http_request_duration_seconds HTTP request latency distribution
# TYPE http_request_duration_seconds histogram
http_request_duration_seconds_bucket{le="0.1"} 300
http_request_duration_seconds_bucket{le="0.5"} 450
http_request_duration_seconds_bucket{le="1"} 490
http_request_duration_seconds_bucket{le="+Inf"} 500
http_request_duration_seconds_sum 123.4
http_request_duration_seconds_count 500解读: 上述示例表示,共有500次请求。其中,延迟≤0.1s的有300次,≤0.5s的有450次。总延迟为123.4秒。
一句话定义:与 Histogram 类似,但它直接在客户端计算并暴露**分位数**(Quantiles),而不是桶。
_sum 和 _count 指标。# HELP http_request_duration_seconds HTTP request latency summary
# TYPE http_request_duration_seconds summary
http_request_duration_seconds{quantile="0.5"} 0.25
http_request_duration_seconds{quantile="0.9"} 0.42
http_request_duration_seconds{quantile="0.99"} 0.78
http_request_duration_seconds_sum 123.4
http_request_duration_seconds_count 500解读: 50%的请求延迟在0.25秒以下,90%的请求在0.42秒以下。
两者都用于测量延迟等分布性指标,但核心区别在于**计算和聚合的方式**。
| 特性 | 📊 Histogram | 📉 Summary |
|---|---|---|
| 核心机制 | 基于桶(Buckets)的计数 | 基于客户端计算的分位数 |
| 服务端聚合 | ✅ **可聚合** | ❌ **不可聚合** |
| 分位数计算 | 需在 Prometheus 服务端通过 histogram_quantile() 函数估算 |
✅ 在客户端直接计算并暴露 |
| 资源开销 | 服务端计算开销较高 | 客户端计算开销较高 |
| 典型用途 | 分布式系统中的 SLA/SLO 监控、整体延迟分析 | 单个节点的性能调优、黑盒监控 |